home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / circuits / spice2g6.z / spice2g6 / spice / Fortran / dcop.f < prev    next >
Encoding:
Text File  |  1989-02-03  |  18.2 KB  |  533 lines

  1. c spice version 2g.6  sccsid=dcop.ma 3/15/83
  2.       subroutine dcop
  3.       implicit double precision (a-h,o-z)
  4. c
  5. c     this routine prints out the operating points of the nonlinear
  6. c circuit elements.
  7. c
  8. c spice version 2g.6  sccsid=tabinf 3/15/83
  9.       common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem,
  10.      1   isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize,
  11.      2   junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr,
  12.      3   nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1,
  13.      4   lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd,
  14.      5   imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval,
  15.      6   loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt,
  16.      7   irowno,jcolno,nttbr,nttar,lvntmp
  17. c spice version 2g.6  sccsid=cirdat 3/15/83
  18.       common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop,
  19.      1   nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc
  20. c spice version 2g.6  sccsid=status 3/15/83
  21.       common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet,
  22.      1   xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon,
  23.      2   iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile
  24. c spice version 2g.6  sccsid=knstnt 3/15/83
  25.       common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok,
  26.      1   gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox,
  27.      2   pivtol,pivrel
  28. c spice version 2g.6  sccsid=miscel 3/15/83
  29.       common /miscel/ atime,aprog(3),adate,atitle(10),defl,defw,defad,
  30.      1  defas,rstats(50),iwidth,lwidth,nopage
  31. c spice version 2g.6  sccsid=dc 3/15/83
  32.       common /dc/ tcstar(2),tcstop(2),tcincr(2),icvflg,itcelm(2),kssop,
  33.      1   kinel,kidin,kovar,kidout
  34. c spice version 2g.6  sccsid=ac 3/15/83
  35.       common /ac/ fstart,fstop,fincr,skw2,refprl,spw2,jacflg,idfreq,
  36.      1   inoise,nosprt,nosout,nosin,idist,idprt
  37. c spice version 2g.6  sccsid=blank 3/15/83
  38.       common /blank/ value(200000)
  39.       integer nodplc(64)
  40.       complex cvalue(32)
  41.       equivalence (value(1),nodplc(1),cvalue(1))
  42.       logical memptr
  43. c
  44. c
  45.       dimension optitl(4)
  46.       dimension anam(12),av1(12),ai1(12),req(12)
  47.       dimension amod(12),vd(12),cap(12)
  48.       dimension cb(12),cc(12),vbe(12),vbc(12),vce(12),rpi(12),
  49.      1   ro(12),cpi(12),cmu(12),betadc(12),betaac(12),ft(12),
  50.      2   ccs(12),cbx(12),rx(12)
  51.       dimension cg(12),vgs(12),vds(12),gds(12),vbs(12),cbd(12),cbs(12),
  52.      2  cgsov(12),cgdov(12),cgbov(12),vth(12),vdsat(12),cd(12),gm(12),
  53.      3  cggb(12),cgdb(12),cgsb(12),cbgb(12),cbdb(12),cbsb(12),
  54.      4  gmb(12)
  55.       dimension cgs(12),cgd(12),cgb(12),cds(12)
  56.       equivalence(cb(1),cg(1)),(cc(1),vgs(1)),(vbe(1),vds(1)),
  57.      1(vbc(1),gds(1)),(vce(1),vbs(1)),(rpi(1),cbd(1)),
  58.      2(ro(1),cbs(1)),(cpi(1),cgsov(1)),(cmu(1),cgdov(1)),
  59.      3(betadc(1),cgbov(1)),(betaac(1),vth(1)),(ft(1),vdsat(1)),
  60.      4(ccs(1),cd(1)),(cbx(1),cggb(1)),(rx(1),cgdb(1))
  61.       equivalence(vd(1),cg(1)),(cap(1),vgs(1)),(av1(1),vds(1)),
  62.      1  (ai1(1),gds(1)),(req(1),vbs(1))
  63.       equivalence (cgs(1),cggb(1)),(cgd(1),cgdb(1)),(cgb(1),cgsb(1)),
  64.      1  (cds(1),cbgb(1))
  65.       dimension afmt1(3),afmt2(2),afmt3(3),afmt4(3)
  66.       data optitl / 8hoperatin, 8hg point , 8hinformat, 8hion      /
  67.       data av,avd,avbe,avbc,avce,avgs,avds,avbs / 1hv,2hvd,3hvbe,3hvbc,
  68.      1   3hvce,3hvgs,3hvds,3hvbs /
  69.       data acntrv,acntri,asrcv,asrci,atrang,atranr,avgain,aigain /
  70.      1   8hv-contrl, 8hi-contrl, 8hv-source, 8hi-source,
  71.      2   8htrans-g , 8htrans-r , 8hv gain  , 8hi gain   /
  72.       data ai,aid,aib,aic,aig / 1hi,2hid,2hib,2hic,2hig /
  73.       data areq,arpi,aro / 3hreq,3hrpi,2hro /
  74.       data acap,acpi,acmu,acgs,acgd,acbd,acbs / 3hcap,3hcpi,3hcmu,3hcgs,
  75.      1   3hcgd,3hcbd,3hcbs /
  76.       data acgsov,acgdov,acgbov /6hcgsovl,6hcgdovl,6hcgbovl/
  77.       data acggb,acgdb,acgsb,acbgb,acbdb,acbsb /7hdqgdvgb,7hdqgdvdb,
  78.      1  7hdqgdvsb,7hdqbdvgb,7hdqbdvdb,7hdqbdvsb/
  79.       data acgb,acds / 3hcgb,3hcds /
  80.       data avth, avdsat / 3hvth, 5hvdsat /
  81.       data agm,agds / 2hgm,3hgds /
  82.       data agmb / 4hgmb /
  83.       data accs,acbx,arx /3hccs,3hcbx,2hrx/
  84.       data abetad,abetaa / 6hbetadc,6hbetaac /
  85.       data aft / 2hft /
  86. c
  87.       data ablnk /1h /
  88.       data afmt1 /8h(//1h0,1,8h0x,  (2x,8h,a8))   /
  89.       data afmt2 /8h(1h ,a8,,8h  f10.3)/
  90.       data afmt3 /8h(1h ,a8,,8h1p  e10.,8h2)      /
  91.       data afmt4 /8h('0model,8h   ',  (,8h2x,a8)) /
  92. c
  93. c.. fix-up the format statements
  94. c
  95.       kntr=12
  96.       if(lwidth.le.80) kntr=7
  97.       ipos=12
  98.       call move(afmt1,ipos,ablnk,1,2)
  99.       call alfnum(kntr,afmt1,ipos)
  100.       ipos=9
  101.       call move(afmt2,ipos,ablnk,1,2)
  102.       call alfnum(kntr,afmt2,ipos)
  103.       ipos=11
  104.       call move(afmt3,ipos,ablnk,1,2)
  105.       call alfnum(kntr,afmt3,ipos)
  106.       ipos=14
  107.       call move(afmt4,ipos,ablnk,1,2)
  108.       call alfnum(kntr,afmt4,ipos)
  109. c
  110. c  compute voltage source currents and power dissipation
  111. c
  112.       call second(t1)
  113.       if ((mode.eq.1).and.(modedc.eq.2).and.(nosolv.ne.0)) go to 700
  114.       power=0.0d0
  115.       if (jelcnt(9).eq.0) go to 50
  116.       ititle=0
  117.    11 format (////5x,'voltage source currents'//5x,'name',
  118.      1   7x,'current'/)
  119.       loc=locate(9)
  120.    20 if ((loc.eq.0).or.(nodplc(loc+11).ne.0)) go to 50
  121.       locv=nodplc(loc+1)
  122.       iptr=nodplc(loc+6)
  123.       creal=value(lvnim1+iptr)
  124.       power=power-creal*value(locv+1)
  125.       if (ititle.eq.0) write (iofile,11)
  126.       ititle=1
  127.       write (iofile,21) value(locv),creal
  128.    21 format (/5x,a8,1x,1pd10.3)
  129.    30 loc=nodplc(loc)
  130.       go to 20
  131.    50 loc=locate(10)
  132.    60 if ((loc.eq.0).or.(nodplc(loc+6).ne.0)) go to 90
  133.       locv=nodplc(loc+1)
  134.       node1=nodplc(loc+2)
  135.       node2=nodplc(loc+3)
  136.       power=power-value(locv+1)
  137.      1   *(value(lvnim1+node1)-value(lvnim1+node2))
  138.       loc=nodplc(loc)
  139.       go to 60
  140.    90 write (iofile,91) power
  141.    91 format (//5x,'total power dissipation  ',1pd9.2,'  watts')
  142. c
  143. c  small signal device parameters
  144. c
  145.       numdev=jelcnt(5)+jelcnt(6)+jelcnt(7)+jelcnt(8)+jelcnt(11)
  146.      1   +jelcnt(12)+jelcnt(13)+jelcnt(14)
  147.       if (numdev.eq.0) go to 600
  148.       call title(0,lwidth,1,optitl)
  149.       kntlim=lwidth/11
  150. c
  151. c  nonlinear voltage controlled current sources
  152. c
  153.       if (jelcnt(5).eq.0) go to 175
  154.       ititle=0
  155.   111 format(1h0,/,'0**** voltage-controlled current sources')
  156.       loc=locate(5)
  157.       kntr=0
  158.   120 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 140
  159.       kntr=kntr+1
  160.       locv=nodplc(loc+1)
  161.       loct=lx0+nodplc(loc+12)
  162.       anam(kntr)=value(locv)
  163.       ai1(kntr)=value(loct)
  164.       if (kntr.ge.kntlim) go to 150
  165.   130 loc=nodplc(loc)
  166.       go to 120
  167.   140 if (kntr.eq.0) go to 175
  168.   150 if (ititle.eq.0) write (iofile,111)
  169.       ititle=1
  170.       write (iofile,afmt1) (anam(i),i=1,kntr)
  171.       write (iofile,afmt3) asrci,(ai1(i),i=1,kntr)
  172.       kntr=0
  173.       if ((loc.ne.0).and.(nodplc(loc+13).eq.0)) go to 130
  174. c
  175. c  nonlinear voltage controlled voltage sources
  176. c
  177.   175 if (jelcnt(6).eq.0) go to 186
  178.       ititle=0
  179.   176 format(1h0,/,'0**** voltage-controlled voltage sources')
  180.       loc=locate(6)
  181.       kntr=0
  182.   178 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 182
  183.       kntr=kntr+1
  184.       locv=nodplc(loc+1)
  185.       loct=lx0+nodplc(loc+13)
  186.       anam(kntr)=value(locv)
  187.       av1(kntr)=value(loct)
  188.       ai1(kntr)=value(loct+1)
  189.       if (kntr.ge.kntlim) go to 184
  190.   180 loc=nodplc(loc)
  191.       go to 178
  192.   182 if (kntr.eq.0) go to 186
  193.   184 if (ititle.eq.0) write (iofile,176)
  194.       ititle=1
  195.       write (iofile,afmt1) (anam(i),i=1,kntr)
  196.       write (iofile,afmt2) asrcv,(av1(i),i=1,kntr)
  197.       write (iofile,afmt3) asrci,(ai1(i),i=1,kntr)
  198.       kntr=0
  199.       if ((loc.ne.0).and.(nodplc(loc+14).eq.0)) go to 180
  200. c
  201. c  nonlinear current controlled current sources
  202. c
  203.   186 if (jelcnt(7).eq.0) go to 196
  204.       ititle=0
  205.   187 format(1h0,/,'0**** current-controlled current sources')
  206.       loc=locate(7)
  207.       kntr=0
  208.   188 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 192
  209.       kntr=kntr+1
  210.       locv=nodplc(loc+1)
  211.       loct=lx0+nodplc(loc+12)
  212.       anam(kntr)=value(locv)
  213.       ai1(kntr)=value(loct)
  214.       if (kntr.ge.kntlim) go to 194
  215.   190 loc=nodplc(loc)
  216.       go to 188
  217.   192 if (kntr.eq.0) go to 196
  218.   194 if (ititle.eq.0) write (iofile,187)
  219.       ititle=1
  220.       write (iofile,afmt1) (anam(i),i=1,kntr)
  221.       write (iofile,afmt3) asrci,(ai1(i),i=1,kntr)
  222.       kntr=0
  223.       if ((loc.ne.0).and.(nodplc(loc+13).eq.0)) go to 190
  224. c
  225. c  nonlinear current controlled voltage sources
  226. c
  227.   196 if (jelcnt(8).eq.0) go to 210
  228.       ititle=0
  229.   197 format(1h0,/,'0**** current-controlled voltage sources')
  230.       loc=locate(8)
  231.       kntr=0
  232.   198 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 202
  233.       kntr=kntr+1
  234.       locv=nodplc(loc+1)
  235.       loct=lx0+nodplc(loc+13)
  236.       anam(kntr)=value(locv)
  237.       av1(kntr)=value(loct)
  238.       ai1(kntr)=value(loct+1)
  239.       if (kntr.ge.kntlim) go to 204
  240.   200 loc=nodplc(loc)
  241.       go to 198
  242.   202 if (kntr.eq.0) go to 210
  243.   204 if (ititle.eq.0) write (iofile,197)
  244.       ititle=1
  245.       write (iofile,afmt1) (anam(i),i=1,kntr)
  246.       write (iofile,afmt2) asrcv,(av1(i),i=1,kntr)
  247.       write (iofile,afmt3) asrci,(ai1(i),i=1,kntr)
  248.       kntr=0
  249.       if ((loc.ne.0).and.(nodplc(loc+14).eq.0)) go to 200
  250. c
  251. c  diodes
  252. c
  253.   210 if (jelcnt(11).eq.0) go to 300
  254.       ititle=0
  255.   211 format(1h0,/,'0**** diodes')
  256.       loc=locate(11)
  257.       kntr=0
  258.   220 if ((loc.eq.0).or.(nodplc(loc+16).ne.0)) go to 240
  259.       kntr=kntr+1
  260.       locv=nodplc(loc+1)
  261.       node1=nodplc(loc+2)
  262.       node2=nodplc(loc+3)
  263.       locm=nodplc(loc+5)
  264.       locm=nodplc(locm+1)
  265.       loct=lx0+nodplc(loc+11)
  266.       anam(kntr)=value(locv)
  267.       amod(kntr)=value(locm)
  268.       cd(kntr)=value(loct+1)
  269.       vd(kntr)=value(lvnim1+node1)-value(lvnim1+node2)
  270.       if (modedc.ne.1) go to 225
  271.       req(kntr)=1.0d0/value(loct+2)
  272.       cap(kntr)=value(loct+4)
  273.   225 if (kntr.ge.kntlim) go to 250
  274.   230 loc=nodplc(loc)
  275.       go to 220
  276.   240 if (kntr.eq.0) go to 300
  277.   250 if (ititle.eq.0) write (iofile,211)
  278.       ititle=1
  279.       write (iofile,afmt1) (anam(i),i=1,kntr)
  280.       write (iofile,afmt4) (amod(i),i=1,kntr)
  281.       write (iofile,afmt3) aid,(cd(i),i=1,kntr)
  282.       write (iofile,afmt2) avd,(vd(i),i=1,kntr)
  283.       if (modedc.ne.1) go to 260
  284.       write (iofile,afmt3) areq,(req(i),i=1,kntr)
  285.       write (iofile,afmt3) acap,(cap(i),i=1,kntr)
  286.   260 kntr=0
  287.       if ((loc.ne.0).and.(nodplc(loc+16).eq.0)) go to 230
  288. c
  289. c  bipolar junction transistors
  290. c
  291.   300 if (jelcnt(12).eq.0) go to 400
  292.       ititle=0
  293.   301 format(1h0,/,'0**** bipolar junction transistors')
  294.       loc=locate(12)
  295.       kntr=0
  296.   320 if ((loc.eq.0).or.(nodplc(loc+36).ne.0)) go to 340
  297.       kntr=kntr+1
  298.       locv=nodplc(loc+1)
  299.       node1=nodplc(loc+2)
  300.       node2=nodplc(loc+3)
  301.       node3=nodplc(loc+4)
  302.       locm=nodplc(loc+8)
  303.       type=nodplc(locm+2)
  304.       locm=nodplc(locm+1)
  305.       loct=lx0+nodplc(loc+22)
  306.       anam(kntr)=value(locv)
  307.       amod(kntr)=value(locm)
  308.       cb(kntr)=type*value(loct+3)
  309.       cc(kntr)=type*value(loct+2)
  310.       vbe(kntr)=value(lvnim1+node2)-value(lvnim1+node3)
  311.       vbc(kntr)=value(lvnim1+node2)-value(lvnim1+node1)
  312.       vce(kntr)=vbe(kntr)-vbc(kntr)
  313.       betadc(kntr)=cc(kntr)/dsign(dmax1(dabs(cb(kntr)),1.0d-20),
  314.      1  cb(kntr))
  315.       if (modedc.ne.1) go to 325
  316.       rx(kntr)=0.0d0
  317.       if(value(loct+16).ne.0.0d0) rx(kntr)=1.0d0/value(loct+16)
  318.       ccs(kntr)=value(loct+13)
  319.       cbx(kntr)=value(loct+15)
  320.       rpi(kntr)=1.0d0/value(loct+4)
  321.       gm(kntr)=value(loct+6)
  322.       ro(kntr)=1.0d0/value(loct+7)
  323.       cpi(kntr)=value(loct+9)
  324.       cmu(kntr)=value(loct+11)
  325.       betaac(kntr)=gm(kntr)*rpi(kntr)
  326.       ft(kntr)=gm(kntr)/(twopi*dmax1(cpi(kntr)+cmu(kntr)+cbx(kntr),
  327.      1  1.0d-20))
  328.   325 if (kntr.ge.kntlim) go to 350
  329.   330 loc=nodplc(loc)
  330.       go to 320
  331.   340 if (kntr.eq.0) go to 400
  332.   350 if (ititle.eq.0) write (iofile,301)
  333.       ititle=1
  334.       write (iofile,afmt1) (anam(i),i=1,kntr)
  335.       write (iofile,afmt4) (amod(i),i=1,kntr)
  336.       write (iofile,afmt3) aib,(cb(i),i=1,kntr)
  337.       write (iofile,afmt3) aic,(cc(i),i=1,kntr)
  338.       write (iofile,afmt2) avbe,(vbe(i),i=1,kntr)
  339.       write (iofile,afmt2) avbc,(vbc(i),i=1,kntr)
  340.       write (iofile,afmt2) avce,(vce(i),i=1,kntr)
  341.       write (iofile,afmt2) abetad,(betadc(i),i=1,kntr)
  342.       if (modedc.ne.1) go to 360
  343.       write (iofile,afmt3) agm,(gm(i),i=1,kntr)
  344.       write (iofile,afmt3) arpi,(rpi(i),i=1,kntr)
  345.       write (iofile,afmt3) arx,(rx(i),i=1,kntr)
  346.       write (iofile,afmt3) aro,(ro(i),i=1,kntr)
  347.       write (iofile,afmt3) acpi,(cpi(i),i=1,kntr)
  348.       write (iofile,afmt3) acmu,(cmu(i),i=1,kntr)
  349.       write (iofile,afmt3) acbx,(cbx(i),i=1,kntr)
  350.       write (iofile,afmt3) accs,(ccs(i),i=1,kntr)
  351.       write (iofile,afmt2) abetaa,(betaac(i),i=1,kntr)
  352.       write (iofile,afmt3) aft,(ft(i),i=1,kntr)
  353.   360 kntr=0
  354.       if ((loc.ne.0).and.(nodplc(loc+36).eq.0)) go to 330
  355. c
  356. c  jfets
  357. c
  358.   400 if (jelcnt(13).eq.0) go to 500
  359.       ititle=0
  360.   401 format(1h0,/,'0**** jfets')
  361.       loc=locate(13)
  362.       kntr=0
  363.   420 if ((loc.eq.0).or.(nodplc(loc+25).ne.0)) go to 440
  364.       kntr=kntr+1
  365.       locv=nodplc(loc+1)
  366.       node1=nodplc(loc+2)
  367.       node2=nodplc(loc+3)
  368.       node3=nodplc(loc+4)
  369.       locm=nodplc(loc+7)
  370.       type=nodplc(locm+2)
  371.       locm=nodplc(locm+1)
  372.       loct=lx0+nodplc(loc+19)
  373.       anam(kntr)=value(locv)
  374.       amod(kntr)=value(locm)
  375.       cd(kntr)=type*(value(loct+3)-value(loct+4))
  376.       vgs(kntr)=value(lvnim1+node2)-value(lvnim1+node3)
  377.       vds(kntr)=value(lvnim1+node1)-value(lvnim1+node3)
  378.       if (modedc.ne.1) go to 425
  379.       gm(kntr)=value(loct+5)
  380.       gds(kntr)=value(loct+6)
  381.       cgs(kntr)=value(loct+9)
  382.       cgd(kntr)=value(loct+11)
  383.   425 if (kntr.ge.kntlim) go to 450
  384.   430 loc=nodplc(loc)
  385.       go to 420
  386.   440 if (kntr.eq.0) go to 500
  387.   450 if (ititle.eq.0) write (iofile,401)
  388.       ititle=1
  389.       write (iofile,afmt1) (anam(i),i=1,kntr)
  390.       write (iofile,afmt4) (amod(i),i=1,kntr)
  391.       write (iofile,afmt3) aid,(cd(i),i=1,kntr)
  392.       write (iofile,afmt2) avgs,(vgs(i),i=1,kntr)
  393.       write (iofile,afmt2) avds,(vds(i),i=1,kntr)
  394.       if (modedc.ne.1) go to 460
  395.       write (iofile,afmt3) agm,(gm(i),i=1,kntr)
  396.       write (iofile,afmt3) agds,(gds(i),i=1,kntr)
  397.       write (iofile,afmt3) acgs,(cgs(i),i=1,kntr)
  398.       write (iofile,afmt3) acgd,(cgd(i),i=1,kntr)
  399.   460 kntr=0
  400.       if ((loc.ne.0).and.(nodplc(loc+25).eq.0)) go to 430
  401. c
  402. c  mosfets
  403. c
  404.   500 if (jelcnt(14).eq.0) go to 600
  405.       ititle=0
  406.   501 format(1h0,/,'0**** mosfets')
  407.       loc=locate(14)
  408.       kntr=0
  409.   520 if ((loc.eq.0).or.(nodplc(loc+33).ne.0)) go to 540
  410.       kntr=kntr+1
  411.       locv=nodplc(loc+1)
  412.       node1=nodplc(loc+2)
  413.       node2=nodplc(loc+3)
  414.       node3=nodplc(loc+4)
  415.       node4=nodplc(loc+5)
  416.       node5=nodplc(loc+6)
  417.       node6=nodplc(loc+7)
  418.       locm=nodplc(loc+8)
  419.       type=nodplc(locm+2)
  420.       locm=nodplc(locm+1)
  421.       loct=lx0+nodplc(loc+26)
  422.       anam(kntr)=value(locv)
  423.       amod(kntr)=value(locm)
  424.       cd(kntr)=type*value(loct+4)
  425.       vgs(kntr)=value(lvnim1+node2)-value(lvnim1+node3)
  426.       vds(kntr)=value(lvnim1+node1)-value(lvnim1+node3)
  427.       vbs(kntr)=value(lvnim1+node4)-value(lvnim1+node3)
  428.       if (modedc.ne.1) go to 525
  429.       xl=value(locv+1)-2.0d0*value(locm+28)
  430.       xw=value(locv+2)
  431.       covlgs=value(locm+13)*xw
  432.       covlgd=value(locm+14)*xw
  433.       covlgb=value(locm+15)*xl
  434.       xqco=value(locm+35)
  435.       devmod=value(locv+8)
  436.       vdsat(kntr)=value(locv+10)
  437.       vth(kntr)=value(locv+9)
  438.       gm(kntr)=value(loct+7)
  439.       gds(kntr)=value(loct+8)
  440.       gmb(kntr)=value(loct+9)
  441.       if(devmod.gt.0.0d0) go to 521
  442.       vth(kntr)=value(locv+9)
  443.   521 cbd(kntr)=value(loct+24)
  444.       cbs(kntr)=value(loct+26)
  445.       cgsov(kntr)=covlgs
  446.       cgdov(kntr)=covlgd
  447.       cgbov(kntr)=covlgb
  448.       if (xqco.gt.0.5d0) go to 522
  449.       cggb(kntr)=value(loct+18)
  450.       cgdb(kntr)=value(loct+19)
  451.       cgsb(kntr)=value(loct+20)
  452.       cbgb(kntr)=value(loct+21)
  453.       cbdb(kntr)=value(loct+22)
  454.       cbsb(kntr)=value(loct+23)
  455.       go to 525
  456.   522 cgs(kntr)=value(loct+12)
  457.       cgd(kntr)=value(loct+14)
  458.       cgb(kntr)=value(loct+16)
  459.   525 if (kntr.ge.kntlim) go to 550
  460.   530 loc=nodplc(loc)
  461.       go to 520
  462.   540 if (kntr.eq.0) go to 600
  463.   550 if (ititle.eq.0) write (iofile,501)
  464.       ititle=1
  465.       write (iofile,afmt1) (anam(i),i=1,kntr)
  466.       write (iofile,afmt4) (amod(i),i=1,kntr)
  467.       if(type.eq.0.0d0) go to 555
  468.       write (iofile,afmt3) aid,(cd(i),i=1,kntr)
  469.       write (iofile,afmt2) avgs,(vgs(i),i=1,kntr)
  470.       write (iofile,afmt2) avds,(vds(i),i=1,kntr)
  471.       write (iofile,afmt2) avbs,(vbs(i),i=1,kntr)
  472.       if (modedc.ne.1) go to 560
  473.       write (iofile,afmt2) avth,(vth(i),i=1,kntr)
  474.       write (iofile,afmt2) avdsat,(vdsat(i),i=1,kntr)
  475.       write (iofile,afmt3) agm,(gm(i),i=1,kntr)
  476.       write (iofile,afmt3) agds,(gds(i),i=1,kntr)
  477.       write (iofile,afmt3) agmb,(gmb(i),i=1,kntr)
  478.       write (iofile,afmt3) acbd,(cbd(i),i=1,kntr)
  479.       write (iofile,afmt3) acbs,(cbs(i),i=1,kntr)
  480.       write (iofile,afmt3) acgsov,(cgsov(i),i=1,kntr)
  481.       write (iofile,afmt3) acgdov,(cgdov(i),i=1,kntr)
  482.       write (iofile,afmt3) acgbov,(cgbov(i),i=1,kntr)
  483.       if (xqco.gt.0.5d0) go to 552
  484.       write (iofile,551)
  485.   551 format(' derivatives of gate (dqgdvx) and bulk (dqbdvx) charges')
  486.       write (iofile,afmt3) acggb,(cggb(i),i=1,kntr)
  487.       write (iofile,afmt3) acgdb,(cgdb(i),i=1,kntr)
  488.       write (iofile,afmt3) acgsb,(cgsb(i),i=1,kntr)
  489.       write (iofile,afmt3) acbgb,(cbgb(i),i=1,kntr)
  490.       write (iofile,afmt3) acbdb,(cbdb(i),i=1,kntr)
  491.       write (iofile,afmt3) acbsb,(cbsb(i),i=1,kntr)
  492.       go to 560
  493.   552 write (iofile,afmt3) acgs,(cgs(i),i=1,kntr)
  494.       write (iofile,afmt3) acgd,(cgd(i),i=1,kntr)
  495.       write (iofile,afmt3) acgb,(cgb(i),i=1,kntr)
  496.       go to 560
  497.   555 write (iofile,afmt3) aid,(cd(i),i=1,kntr)
  498.       write (iofile,afmt3) aig,(cg(i),i=1,kntr)
  499.       write (iofile,afmt2) avgs,(vgs(i),i=1,kntr)
  500.       write (iofile,afmt2) avds,(vds(i),i=1,kntr)
  501.       write (iofile,afmt2) avbs,(vbs(i),i=1,kntr)
  502.       if (modedc.ne.1) go to 560
  503.       write (iofile,afmt3) agm,(gm(i),i=1,kntr)
  504.       write (iofile,afmt3) agds,(gds(i),i=1,kntr)
  505.       write (iofile,afmt3) acgs,(cgs(i),i=1,kntr)
  506.       write (iofile,afmt3) acgd,(cgd(i),i=1,kntr)
  507.       write (iofile,afmt3) acgb,(cgb(i),i=1,kntr)
  508.       write (iofile,afmt3) acds,(cds(i),i=1,kntr)
  509.   560 kntr=0
  510.       if ((loc.ne.0).and.(nodplc(loc+33).eq.0)) go to 530
  511. c
  512. c  operating point analyses
  513. c
  514.   600 if (modedc.ne.1) go to 700
  515.       if (kinel.eq.0) go to 610
  516.       call sstf
  517.   610 if (nsens.eq.0) go to 700
  518.       call sencal
  519. c
  520. c  finished
  521. c
  522.   700 if (modedc.eq.2) go to 710
  523.       if (jacflg.ne.0) go to 705
  524.       call clrmem(lvnim1)
  525.       call clrmem(lx0)
  526.   705 call clrmem(lvn)
  527.       call clrmem(lvntmp)
  528.       if (memptr(macins)) call clrmem(macins)
  529.   710 call second(t2)
  530.       rstats(5)=rstats(5)+t2-t1
  531.       return
  532.       end
  533.